{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "54bccc44",
   "metadata": {},
   "source": [
    "# 生育年龄对人口的影响\n",
    "\n",
    "假设初始人口1亿，男女总是比例1:1，都是18岁，生育年龄大于18岁。一对夫妻生2个孩子，且2个孩子生育间隔2年。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f91541dc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[50, 50]"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "young=0\n",
    "adult=100000000\n",
    "old=0\n",
    "died=0\n",
    "birth_during=2\n",
    "\n",
    "max_young_age = 18\n",
    "max_adult_age = max_young_age + birth_during\n",
    "max_old_age = 100\n",
    "\n",
    "# 初始化\n",
    "age_list=[]\n",
    "for i in range(0,101):\n",
    "    age_list.append(0)\n",
    "for i in range(max_young_age,max_adult_age):\n",
    "    age_list[i]=int(adult/birth_during)\n",
    "\n",
    "age_list[max_young_age]\n",
    "# age_list[max_adult_age]\n",
    "# age_list[max_old_age]\n",
    "age_list[max_young_age:max_adult_age]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4ee03ccb",
   "metadata": {},
   "outputs": [],
   "source": [
    "def change_ages_list(some_list:list,first=0):\n",
    "    a_list=some_list.copy()\n",
    "    a_list.pop()\n",
    "    return [first]+a_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3102482b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 第n年人口数\n",
    "def foo(n):\n",
    "    birth_during=1\n",
    "    max_young_age = 22\n",
    "    max_adult_age = max_young_age + birth_during\n",
    "    max_old_age = 80\n",
    "    if(n==0):\n",
    "        young=0\n",
    "        adult=1000\n",
    "        old=0\n",
    "        died=0\n",
    "        # 初始化\n",
    "        age_list=[]\n",
    "        for i in range(0,101):\n",
    "            age_list.append(0)\n",
    "        for i in range(max_young_age,max_adult_age):\n",
    "            age_list[i]=int(adult/birth_during)\n",
    "        return age_list,0\n",
    "    elif(n==1):\n",
    "        (age_list,die)=foo(n-1)\n",
    "        adult= sum(age_list[max_young_age:max_adult_age])\n",
    "        adult0 = age_list[max_young_age-1]\n",
    "        old0 = age_list[max_adult_age]\n",
    "        young0=int((adult+adult0)/2)\n",
    "        die=die+age_list[max_old_age-1]\n",
    "        print('===第{}年历史总人口:{}，未成年:{},成年:{}，老年:{}——新出生人口:{}，死亡:{}，累计死亡:{}'.format(\n",
    "            n,sum(age_list),\n",
    "            sum(age_list[0:max_young_age]),\n",
    "            sum(age_list[max_young_age:max_adult_age]),\n",
    "            sum(age_list[max_adult_age:]),\n",
    "            young0,age_list[max_old_age-1],\n",
    "            die))\n",
    "        return  (change_ages_list(age_list,young0),die)\n",
    "    elif(n>1):\n",
    "        (age_list,die)=foo(n-1)\n",
    "        adult= sum(age_list[max_young_age:max_adult_age])\n",
    "        young0=int((adult)/2)\n",
    "        die=die+age_list[max_old_age-1]\n",
    "        print('===第{}年历史总人口:{}，未成年:{},成年:{}，老年:{}——新出生人口:{}，死亡:{}，累计死亡:{}'.format(\n",
    "            n,sum(age_list),\n",
    "            sum(age_list[0:max_young_age]),\n",
    "            sum(age_list[max_young_age:max_adult_age]),\n",
    "            sum(age_list[max_adult_age:]),\n",
    "            young0,age_list[max_old_age-1],\n",
    "            die))\n",
    "        return  (change_ages_list(age_list,young0),die)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d1112996",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "===第1年历史总人口:1000，未成年:0,成年:1000，老年:0——新出生人口:500，死亡:0，累计死亡:0\n",
      "===第2年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第3年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第4年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第5年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第6年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第7年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第8年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第9年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第10年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第11年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第12年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第13年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第14年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第15年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第16年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第17年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第18年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第19年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第20年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第21年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第22年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第23年历史总人口:1500，未成年:500,成年:0，老年:1000——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第24年历史总人口:1500，未成年:0,成年:500，老年:1000——新出生人口:250，死亡:0，累计死亡:0\n",
      "===第25年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第26年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第27年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第28年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第29年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第30年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第31年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第32年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第33年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第34年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第35年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第36年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第37年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第38年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第39年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第40年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第41年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第42年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第43年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第44年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第45年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第46年历史总人口:1750，未成年:250,成年:0，老年:1500——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第47年历史总人口:1750，未成年:0,成年:250，老年:1500——新出生人口:125，死亡:0，累计死亡:0\n",
      "===第48年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第49年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第50年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第51年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第52年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第53年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第54年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第55年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第56年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第57年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:0\n",
      "===第58年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:1000，累计死亡:1000\n",
      "===第59年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第60年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第61年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第62年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第63年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第64年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第65年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第66年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第67年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第68年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第69年历史总人口:1875，未成年:125,成年:0，老年:1750——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第70年历史总人口:1875，未成年:0,成年:125，老年:1750——新出生人口:62，死亡:0，累计死亡:1000\n",
      "===第71年历史总人口:1937，未成年:62,成年:0，老年:1875——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第72年历史总人口:1937，未成年:62,成年:0，老年:1875——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第73年历史总人口:1937，未成年:62,成年:0，老年:1875——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第74年历史总人口:1937，未成年:62,成年:0，老年:1875——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第75年历史总人口:1937，未成年:62,成年:0，老年:1875——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第76年历史总人口:1937，未成年:62,成年:0，老年:1875——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第77年历史总人口:1937，未成年:62,成年:0，老年:1875——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第78年历史总人口:1937，未成年:62,成年:0，老年:1875——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第79年历史总人口:1937，未成年:62,成年:0，老年:1875——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第80年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:0，累计死亡:1000\n",
      "===第81年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:500，累计死亡:1500\n",
      "===第82年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第83年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第84年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第85年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第86年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第87年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第88年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第89年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第90年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第91年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第92年历史总人口:937，未成年:62,成年:0，老年:875——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第93年历史总人口:937，未成年:0,成年:62，老年:875——新出生人口:31，死亡:0，累计死亡:1500\n",
      "===第94年历史总人口:968，未成年:31,成年:0，老年:937——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第95年历史总人口:968，未成年:31,成年:0，老年:937——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第96年历史总人口:968，未成年:31,成年:0，老年:937——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第97年历史总人口:968，未成年:31,成年:0，老年:937——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第98年历史总人口:968，未成年:31,成年:0，老年:937——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第99年历史总人口:968，未成年:31,成年:0，老年:937——新出生人口:0，死亡:0，累计死亡:1500\n",
      "===第100年历史总人口:968，未成年:31,成年:0，老年:937——新出生人口:0，死亡:0，累计死亡:1500\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 189,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "foo(100)\n",
    "0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "81c4d2e8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a=[1,2,3,4,5][1:3]\n",
    "sum(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ce1be7bf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[2, 3]"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "41d95c37",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "python",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
